package br.com.fiap.vendas.business.entity;

import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import br.com.fiap.vendas.business.vo.ProdutoVO;

@Entity(name = "Produto")
@Table(name = "PRODUTO")
@SequenceGenerator(name = "PRODUTO_SQ")
public class ProdutoEntity {

    public ProdutoEntity() {

    }

    private ProdutoEntity(Integer id, String nome, BigDecimal valor,
                          Integer quantidade) {
        super();
        this.id = id;
        this.nome = nome;
        this.valor = valor;
        this.quantidade = quantidade;
    }

    @Id
    @GeneratedValue(generator = "PRODUTO_SQ", strategy = GenerationType.AUTO)
    @Column(name = "ID_PRODUTO")
    private Integer id;

    @Column(name = "NOME")
    private String nome;

    @Column(name = "VALOR")
    private BigDecimal valor;

    @Column(name = "QUANTIDADE")
    private Integer quantidade;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public BigDecimal getValor() {
        return valor;
    }

    public void setValor(BigDecimal valor) {
        this.valor = valor;
    }

    public Integer getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(Integer quantidade) {
        this.quantidade = quantidade;
    }

    public static ProdutoEntity build(ProdutoVO produtoVO) {
        return new ProdutoEntity(produtoVO.getId(), produtoVO.getDescricao(),
                produtoVO.getValor(), produtoVO.getQuantidade());
    }

    public ProdutoVO buildProdutoVO() {
        return new ProdutoVO(this.id, this.nome, this.valor, this.quantidade);
    }

}
